//输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有奇数位于数组的前半部分，所有偶数位于数组的后半部分。 
//
// 
//
// 示例： 
//
// 输入：nums = [1,2,3,4]
//输出：[1,3,2,4] 
//注：[3,1,2,4] 也是正确的答案之一。 
//
// 
//
// 提示： 
//
// 
// 1 <= nums.length <= 50000 
// 1 <= nums[i] <= 10000 
// 
// 👍 40 👎 0

package leetcode.editor.cn;

import common.util.MyUtil;

/**
 * Java：调整数组顺序使奇数位于偶数前面
 *
 * @author changgui
 */
@SuppressWarnings("all")
public class P剑指_offer_21_DiaoZhengShuZuShunXuShiQiShuWeiYuOuShuQianMianLcof {
    public static void main(String[] args) {
        Solution solution = new P剑指_offer_21_DiaoZhengShuZuShunXuShiQiShuWeiYuOuShuQianMianLcof().new Solution();
        int[] arr = MyUtil.createRandomArray(10, 1, 20);
        int[] exchange = solution.exchange(arr);
        MyUtil.printInt(exchange);
    }

    //leetcode submit region begin(Prohibit modification and deletion)

    /**
     * 双指针
     */
    class Solution {
        public int[] exchange(int[] nums) {
            int i = 0;
            int j = nums.length - 1;
            while (i < j) {
                if (nums[i] % 2 == 0) {
                    // i偶j奇，交换
                    if (nums[j] % 2 == 1) {
                        swap(nums, i, j);
                    } else {
                        j--;
                    }
                } else {
                    i++;
                }
            }
            return nums;
        }

        private void swap(int[] nums, int i, int j) {
            int temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
        }
    }
    //leetcode submit region end(Prohibit modification and deletion)

}